import { randomString } from "@/myui/js/random";//随机字符串工具函数
import { getSignature } from "@/api/apiconfig";//你们后端写好的签名的获取接口

var wxjssdk = require("jweixin-module"); //引入JSSDK
var nonceStr = randomString(32); // 生成签名的随机串,注意这个s是大写
var timestamp = parseInt(new Date().getTime() / 1000) + ""; // 生成签名的时间戳,到秒级
var url = location.href.split("#")[0]; // 获取当前页面的url中#前面那部分
var appId = "此处用你自己公众号的APPID"; // 公众号的唯一标识appid，注意大小写
var config = { nonceStr, timestamp, url }; //获取微信签名接口所需要的参数
var jsApiList = ["scanQRCode"]; //需要使用的微信JS接口列表
export default {
	async wxconfig() {
		let response = await getSignature(config); //获取签名接口，大家可以用uni.request()替代，此处是我自己封装的接口
		let wxconfig = {
			debug: false, //正式部署的时候记得把这个关掉
			// 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
			appId, // 必填，公众号的唯一标识
			timestamp, // 必填，生成签名的时间戳
			nonceStr, // 必填，生成签名的随机串,注意这个s是大写
			signature: response.Data, // 必填，签名
			//每增加一个要是用的接口，就需要在这里添加相应的微信js接口与之对应
			jsApiList, // 必填，需要使用的JS接口列表
		};
		wxjssdk.config(wxconfig);
	},
	//封装微信JSSDK方法,采用闭包函数的原理将res值抛出到回调函数中
	scanQRcode({ success, fail, needResult = 1 }) {
		this.wxconfig();
		wxjssdk.ready(() => {
			wxjssdk.scanQRCode({
				needResult, // 默认为0，扫描结果由微信处理，1则直接返回扫描结果，
				// scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是一维码，默认二者都有
				success: res => {
					// {errMsg: "scanQRCode:ok", resultStr: ""} 当needResult 为 1 时，resultStr扫码返回的结果
					// {errMsg: "scanQRCode:ok"}当needResult 为 0 时，会导致页面跳转
					//扫码成功，抛出扫码结果
					success(res);
				},
			});
		});
		wxjssdk.error(res => {
			console.log("config fail:", res);
			//config fail，抛出失败原因
			fail(res);
		});
	},
};

